package com.hx.zhg.service.annotation;

import org.springframework.stereotype.Component;

import javax.validation.constraints.NotNull;
import java.lang.annotation.*;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Component
public @interface Task {

    /**
     * description: 任务名称
     *
     * @return
     */
    @NotNull
    String jobName();

    /**
     * description: Cron 表达式
     *
     * @return
     */
    @NotNull
    String cron();

    /**
     * description: 描述
     *
     * @return
     */
    @NotNull
    String desc();

    /**
     * description: 是否快速失败
     *
     * @return
     */
    boolean failover() default false;

    /**
     * description: sharing 参数
     *
     * @return
     */
    String shardingItemParameters() default "";

    /**
     * description: 任务参数
     *
     * @return
     */
    String jobParameter() default "";

    /**
     * @return
     */
    boolean overwrite() default true;

    /**
     * description: 几个分片执行（默认是 1）
     *
     * @return
     */
    int shardingTotalCount() default 1;
}
